From a5ba0d46c2cc9e35e3f713198a50fe3f67ea55f7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 23 Jan 2019 22:52:36 -0500 Subject: [PATCH] combobox: Drop support for grids This is pretty much unued, and we want to get rid of it. This removes support for wrap-width, row-span-column and column-span-column properties. --- gtk/gtkcombobox.c | 279 ++++------------------------------------------ 1 file changed, 20 insertions(+), 259 deletions(-) diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index b47ffe50f6..ae71aa48a8 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -116,11 +116,6 @@ typedef struct GtkCellArea *area; - gint col_column; - gint row_column; - - gint wrap_width; - gint active; /* Only temporary */ GtkTreeRowReference *active_row; @@ -188,9 +183,6 @@ enum { enum { PROP_0, PROP_MODEL, - PROP_WRAP_WIDTH, - PROP_ROW_SPAN_COLUMN, - PROP_COLUMN_SPAN_COLUMN, PROP_ACTIVE, PROP_HAS_FRAME, PROP_POPUP_SHOWN, @@ -379,20 +371,17 @@ gtk_combo_box_size_allocate (GtkWidget *widget, { gint menu_width; - if (priv->wrap_width == 0) - { - gtk_widget_set_size_request (priv->popup_widget, -1, -1); + gtk_widget_set_size_request (priv->popup_widget, -1, -1); - if (priv->popup_fixed_width) - gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, - &menu_width, NULL, NULL, NULL); - else - gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, - NULL, &menu_width, NULL, NULL); + if (priv->popup_fixed_width) + gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, + &menu_width, NULL, NULL, NULL); + else + gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, + NULL, &menu_width, NULL, NULL); - gtk_widget_set_size_request (priv->popup_widget, - MAX (width, menu_width), -1); - } + gtk_widget_set_size_request (priv->popup_widget, + MAX (width, menu_width), -1); /* reposition the menu after giving it a new width */ gtk_menu_reposition (GTK_MENU (priv->popup_widget)); @@ -649,61 +638,6 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) GTK_TYPE_TREE_MODEL, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - /** - * GtkComboBox:wrap-width: - * - * If wrap-width is set to a positive value, items in the popup will be laid - * out along multiple columns, starting a new row on reaching the wrap width. - */ - g_object_class_install_property (object_class, - PROP_WRAP_WIDTH, - g_param_spec_int ("wrap-width", - P_("Wrap width"), - P_("Wrap width for laying out the items in a grid"), - 0, - G_MAXINT, - 0, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - - /** - * GtkComboBox:row-span-column: - * - * If this is set to a non-negative value, it must be the index of a column - * of type %G_TYPE_INT in the model. The value in that column for each item - * will determine how many rows that item will span in the popup. Therefore, - * values in this column must be greater than zero. - */ - g_object_class_install_property (object_class, - PROP_ROW_SPAN_COLUMN, - g_param_spec_int ("row-span-column", - P_("Row span column"), - P_("TreeModel column containing the row span values"), - -1, - G_MAXINT, - -1, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - - /** - * GtkComboBox:column-span-column: - * - * If this is set to a non-negative value, it must be the index of a column - * of type %G_TYPE_INT in the model. The value in that column for each item - * will determine how many columns that item will span in the popup. - * Therefore, values in this column must be greater than zero, and the sum of - * an item’s column position + span should not exceed #GtkComboBox:wrap-width. - */ - g_object_class_install_property (object_class, - PROP_COLUMN_SPAN_COLUMN, - g_param_spec_int ("column-span-column", - P_("Column span column"), - P_("TreeModel column containing the column span values"), - -1, - G_MAXINT, - -1, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - /** * GtkComboBox:active: @@ -902,12 +836,8 @@ gtk_combo_box_init (GtkComboBox *combo_box) GtkTreeMenu *menu; GtkEventController *controller; - priv->wrap_width = 0; - priv->active = -1; priv->active_row = NULL; - priv->col_column = -1; - priv->row_column = -1; priv->popup_shown = FALSE; priv->has_frame = TRUE; @@ -931,9 +861,6 @@ gtk_combo_box_init (GtkComboBox *combo_box) gtk_style_context_add_class (context, "combo"); menu = GTK_TREE_MENU (priv->popup_widget); - _gtk_tree_menu_set_wrap_width (menu, priv->wrap_width); - _gtk_tree_menu_set_row_span_column (menu, priv->row_column); - _gtk_tree_menu_set_column_span_column (menu, priv->col_column); _gtk_tree_menu_set_row_separator_func (menu, (GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func, combo_box, NULL); @@ -964,18 +891,6 @@ gtk_combo_box_set_property (GObject *object, gtk_combo_box_set_model (combo_box, g_value_get_object (value)); break; - case PROP_WRAP_WIDTH: - gtk_combo_box_set_wrap_width (combo_box, g_value_get_int (value)); - break; - - case PROP_ROW_SPAN_COLUMN: - gtk_combo_box_set_row_span_column (combo_box, g_value_get_int (value)); - break; - - case PROP_COLUMN_SPAN_COLUMN: - gtk_combo_box_set_column_span_column (combo_box, g_value_get_int (value)); - break; - case PROP_ACTIVE: gtk_combo_box_set_active (combo_box, g_value_get_int (value)); break; @@ -1053,18 +968,6 @@ gtk_combo_box_get_property (GObject *object, g_value_set_object (value, priv->model); break; - case PROP_WRAP_WIDTH: - g_value_set_int (value, priv->wrap_width); - break; - - case PROP_ROW_SPAN_COLUMN: - g_value_set_int (value, priv->row_column); - break; - - case PROP_COLUMN_SPAN_COLUMN: - g_value_set_int (value, priv->col_column); - break; - case PROP_ACTIVE: g_value_set_int (value, gtk_combo_box_get_active (combo_box)); break; @@ -1357,6 +1260,7 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box) GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); gint active_item; GtkWidget *active; + int width, min_width, nat_width; update_menu_sensitivity (combo_box, priv->popup_widget); @@ -1373,22 +1277,17 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box) /* FIXME handle nested menus better */ gtk_menu_set_active (GTK_MENU (priv->popup_widget), active_item); - if (priv->wrap_width == 0) - { - int width, min_width, nat_width; - - width = gtk_widget_get_width (GTK_WIDGET (combo_box)); - gtk_widget_set_size_request (priv->popup_widget, -1, -1); - gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, - &min_width, &nat_width, NULL, NULL); + width = gtk_widget_get_width (GTK_WIDGET (combo_box)); + gtk_widget_set_size_request (priv->popup_widget, -1, -1); + gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, + &min_width, &nat_width, NULL, NULL); - if (priv->popup_fixed_width) - width = MAX (width, min_width); - else - width = MAX (width, nat_width); + if (priv->popup_fixed_width) + width = MAX (width, min_width); + else + width = MAX (width, nat_width); - gtk_widget_set_size_request (priv->popup_widget, width, -1); - } + gtk_widget_set_size_request (priv->popup_widget, width, -1); g_signal_handlers_disconnect_by_func (priv->popup_widget, gtk_menu_update_scroll_offset, @@ -1396,7 +1295,7 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box) g_object_set (priv->popup_widget, "menu-type-hint", GDK_SURFACE_TYPE_HINT_COMBO, NULL); - if (priv->wrap_width > 0 || priv->cell_view == NULL) + if (priv->cell_view == NULL) { g_object_set (priv->popup_widget, "anchor-hints", (GDK_ANCHOR_FLIP_Y | @@ -2042,144 +1941,6 @@ gtk_combo_box_new_with_model_and_entry (GtkTreeModel *model) NULL); } -/** - * gtk_combo_box_get_wrap_width: - * @combo_box: A #GtkComboBox - * - * Returns the wrap width which is used to determine the number of columns - * for the popup menu. If the wrap width is larger than 1, the combo box - * is in table mode. - * - * Returns: the wrap width. - */ -gint -gtk_combo_box_get_wrap_width (GtkComboBox *combo_box) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1); - - return priv->wrap_width; -} - -/** - * gtk_combo_box_set_wrap_width: - * @combo_box: A #GtkComboBox - * @width: Preferred number of columns - * - * Sets the wrap width of @combo_box to be @width. The wrap width is basically - * the preferred number of columns when you want the popup to be layed out - * in a table. - */ -void -gtk_combo_box_set_wrap_width (GtkComboBox *combo_box, - gint width) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - g_return_if_fail (width >= 0); - - if (width != priv->wrap_width) - { - priv->wrap_width = width; - _gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (priv->popup_widget), priv->wrap_width); - g_object_notify (G_OBJECT (combo_box), "wrap-width"); - } -} - -/** - * gtk_combo_box_get_row_span_column: - * @combo_box: A #GtkComboBox - * - * Returns the column with row span information for @combo_box. - * - * Returns: the row span column. - */ -gint -gtk_combo_box_get_row_span_column (GtkComboBox *combo_box) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1); - - return priv->row_column; -} - -/** - * gtk_combo_box_set_row_span_column: - * @combo_box: A #GtkComboBox. - * @row_span: A column in the model passed during construction. - * - * Sets the column with row span information for @combo_box to be @row_span. - * The row span column contains integers which indicate how many rows - * an item should span. - */ -void -gtk_combo_box_set_row_span_column (GtkComboBox *combo_box, - gint row_span) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - gint col; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - - col = gtk_tree_model_get_n_columns (priv->model); - g_return_if_fail (row_span >= -1 && row_span < col); - - if (row_span != priv->row_column) - { - priv->row_column = row_span; - _gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (priv->popup_widget), priv->row_column); - g_object_notify (G_OBJECT (combo_box), "row-span-column"); - } -} - -/** - * gtk_combo_box_get_column_span_column: - * @combo_box: A #GtkComboBox - * - * Returns the column with column span information for @combo_box. - * - * Returns: the column span column. - */ -gint -gtk_combo_box_get_column_span_column (GtkComboBox *combo_box) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - - g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1); - - return priv->col_column; -} - -/** - * gtk_combo_box_set_column_span_column: - * @combo_box: A #GtkComboBox - * @column_span: A column in the model passed during construction - * - * Sets the column with column span information for @combo_box to be - * @column_span. The column span column contains integers which indicate - * how many columns an item should span. - */ -void -gtk_combo_box_set_column_span_column (GtkComboBox *combo_box, - gint column_span) -{ - GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - gint col; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - - col = gtk_tree_model_get_n_columns (priv->model); - g_return_if_fail (column_span >= -1 && column_span < col); - - if (column_span != priv->col_column) - { - priv->col_column = column_span; - _gtk_tree_menu_set_column_span_column (GTK_TREE_MENU (priv->popup_widget), priv->col_column); - g_object_notify (G_OBJECT (combo_box), "column-span-column"); - } -} - /** * gtk_combo_box_get_active: * @combo_box: A #GtkComboBox -- 2.30.2